﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Glue_Data.ViewModels.GData;
using Glue_Data.Views;

namespace MathFlowLib
{
    /// <summary>
    /// 直线算法参数类
    /// </summary>
    [Serializable]
    public class Vm_MathFlow_Line_Param : Vm_MathFlow_Param
    {
        /// <summary>
        /// 像素当量(mm/pixel)
        /// </summary>
        [Attribute_GAutoView("像素当量(mm/pixel)")]
        public GDouble PixelSize
        {
            get { return _PixelSize; }
            set
            {
                if (_PixelSize != value)
                {
                    _PixelSize = value;
                    this.OnPropertyChanged("PixelSize");
                }
            }
        }
        private GDouble _PixelSize = new GDouble() { Value = 0.1 };

        /// <summary>
        /// 光源到屏幕之间的距离(mm)
        /// </summary>
        [Attribute_GAutoView("光源屏幕距离(mm)")]
        public GDouble FilmDistance
        {
            get { return _FilmDistance; }
            set
            {
                if (_FilmDistance != value)
                {
                    _FilmDistance = value;
                    this.OnPropertyChanged("FilmDistance");
                }
            }
        }
        private GDouble _FilmDistance = new GDouble() { Value = 100 };

        /// <summary>
        /// Fov
        /// </summary>
        [Attribute_GAutoView("Fov")]
        public GDouble Fov
        {
            get { return _Fov; }
            set
            {
                if (_Fov != value)
                {
                    _Fov = value;
                    this.OnPropertyChanged("Fov");
                }
            }
        }
        private GDouble _Fov = new GDouble() { Value = 60 };

        /// <summary>
        /// 计算角度
        /// </summary>
        [Attribute_GAutoView("计算角度")]
        public GBool IsCalAngle
        {
            get { return _IsCalAngle; }
            set
            {
                if (_IsCalAngle != value)
                {
                    _IsCalAngle = value;
                    this.OnPropertyChanged("IsCalAngle");
                }
            }
        }
        private GBool _IsCalAngle = new GBool() { Value = false };

        /// <summary>
        /// 计算指标
        /// </summary>
        [Attribute_GAutoView("计算指标")]
        public GBool IsCalIndicator
        {
            get { return _IsCalIndicator; }
            set
            {
                if (_IsCalIndicator != value)
                {
                    _IsCalIndicator = value;
                    this.OnPropertyChanged("IsCalIndicator");
                }
            }
        }
        private GBool _IsCalIndicator = new GBool() { Value = false };

        /// <summary>
        /// 算法指标判断标准
        /// </summary>
        [Attribute_GAutoView("特征标准")]
        public Vm_MathFlow_Line_FeatureStd MathFlow_FeatureStd
        {
            get { return _MathFlow_FeatureStd; }
            set
            {
                if (_MathFlow_FeatureStd != value)
                {
                    _MathFlow_FeatureStd = value;
                    this.OnPropertyChanged("MathFlow_FeatureStd");
                }
            }
        }
        private Vm_MathFlow_Line_FeatureStd _MathFlow_FeatureStd = new Vm_MathFlow_Line_FeatureStd();
    }
}
